import sys
import time
from unitree_sdk2py.core.channel import ChannelSubscriber, ChannelFactoryInitialize
from unitree_sdk2py.g1.audio.g1_audio_client import AudioClient

def init_audio_client(network_interface="eth0"):
    """
    初始化音频客户端
    
    参数:
        network_interface: 网络接口名称，默认为eth0
    
    返回:
        audio_client: 初始化好的音频客户端对象
    """
    ChannelFactoryInitialize(0, network_interface)
    audio_client = AudioClient()
    audio_client.SetTimeout(10.0)
    audio_client.Init()
    return audio_client

def text_to_speech(text, priority=0, network_interface="eth0"):
    """
    将文本转换为语音
    
    参数:
        text: 要转换的文本内容
        priority: 优先级，默认为0
        network_interface: 网络接口名称，默认为eth0
    """
    audio_client = init_audio_client(network_interface)
    audio_client.TtsMaker(text, priority)
    # 等待语音播放完成（根据文本长度估算时间）
    wait_time = len(text) * 0.1 + 1.0  # 简单估算：每个字符0.1秒 + 1秒基础时间
    time.sleep(wait_time)
    return audio_client

def set_volume(volume, network_interface="eth0"):
    """
    设置音量
    
    参数:
        volume: 音量值（0-100）
        network_interface: 网络接口名称，默认为eth0
    """
    audio_client = init_audio_client(network_interface)
    audio_client.SetVolume(volume)
    return audio_client

def get_volume(network_interface="eth0"):
    """
    获取当前音量
    
    参数:
        network_interface: 网络接口名称，默认为eth0
        
    返回:
        当前音量值
    """
    audio_client = init_audio_client(network_interface)
    return audio_client.GetVolume()

def control_led(r, g, b, network_interface="eth0"):
    """
    控制LED灯带颜色
    
    参数:
        r: 红色分量（0-255）
        g: 绿色分量（0-255）
        b: 蓝色分量（0-255）
        network_interface: 网络接口名称，默认为eth0
    """
    audio_client = init_audio_client(network_interface)
    audio_client.LedControl(r, g, b)
    return audio_client

if __name__ == "__main__":
    # # 命令行参数处理
    # if len(sys.argv) < 2:
    #     print(f"用法: python3 {sys.argv[0]} 文本内容 [网络接口]")
    #     sys.exit(-1)
    
    text_content = sys.argv[1]
    network_interface = sys.argv[2] if len(sys.argv) > 2 else "eth0"
    # text_content="你是谁"
    # 执行文本到语音的转换
    text_to_speech(text_content, 0)
